package com.example.blog_system.common;

import lombok.Data;

import java.io.Serializable;

/**
 * Created with IntelliJ IDEA.
 * Description: 返回给前端的统一格式的信息描述 可以指定 code状态码 msg描述信息 data实际数据
 */
@Data
public class AjaxResult implements Serializable {
    /*
    * 状态码
    * */
    private Integer code;
    /*
    * 描述信息
    * */
    private String msg;

    /*
    * 真正要传递的数据(因为数据类型不确定 统一用Object接受)
    * */
    private Object data;

    /**
     *  成功情况下的构造返回的对象
     * @param data  将data封装到AjaxResult对象里返回
     * @return
     */
    public static AjaxResult success(Object data){
        AjaxResult ajaxResult=new AjaxResult();
        ajaxResult.setCode(200);
        ajaxResult.setMsg("");
        ajaxResult.setData(data);
        return ajaxResult;
    }

    /**
     * 重载 额外添加了指定状态码的设置
     * @param code
     * @param data
     * @return
     */
    public static AjaxResult success(Integer code,Object data){
        AjaxResult ajaxResult=new AjaxResult();
        ajaxResult.setCode(code);
        ajaxResult.setMsg("");
        ajaxResult.setData(data);
        return ajaxResult;
    }

    /**
     *  全参数指定  返回一个统一格式的对象
     * @param code
     * @param msg
     * @param data
     * @return
     */
    public static AjaxResult success(Integer code,String msg,Object data){
        AjaxResult ajaxResult=new AjaxResult();
        ajaxResult.setCode(code);
        ajaxResult.setMsg(msg);
        ajaxResult.setData(data);
        return ajaxResult;
    }

    /**
     *  发生错误时  返回的统一格式对象 传 code和msg
     * @param code
     * @param msg
     * @return
     */
    public static AjaxResult fail(Integer code,String msg){
        AjaxResult ajaxResult=new AjaxResult();
        ajaxResult.setCode(code);
        ajaxResult.setMsg(msg);
        ajaxResult.setData(null);
        return ajaxResult;
    }

    /**
     * 发送错误时, 全参数传递 返回一个统一格式对象
     * @param code
     * @param msg
     * @param data
     * @return
     */
    public static AjaxResult fail(Integer code,String msg,Object data){
        AjaxResult ajaxResult=new AjaxResult();
        ajaxResult.setCode(code);
        ajaxResult.setMsg(msg);
        ajaxResult.setData(data);
        return ajaxResult;
    }
}
